経済学のための機械学習入門
アルゴリズム \simeq 推定手法
決定木 = 非常に優れた出発点
OLSとの高い補完性
直感的
“もっとも”よく使われるデータ活用方法
X 上にサブグループ A_j を定義し、 予測モデル g(X) を以下のルールで生成
g(X_i)=E[Y|X_i\in A_j]
伝統的アプローチ: 研究者が事前(データを見る前に)にA_jを定義
Data adaptive: データが決定
(注) “Bad practice” : 研究者がデータ \{Y,X\} を見ながらA_jを決定
研究者が事前にA_jを定義
各A_jについて、サンプル平均を計算し、予測モデルを構築
予測研究においては、サブグループを定義する際の、 Practical guide lineが限られている
予測結果は、グループの定義に決定的な影響を受ける
停止条件を設定
データに適合するように、A_jを設定
各Aについて、サンプル平均を計算し、予測モデルを構築
E[(Y_i - g(X))^2]
停止条件(最大分割回数、最小サンプルサイズなど)を設定
2分割する: データ内二乗誤差を最小化するように一つの変数、閾値を選ぶ
1度目の分割を”所与”として、2度目の分割を行う
停止条件に達するまで、繰り返す
モデルが停止条件に決定的な影響を受ける
停止条件を緩める (最大分割回数を増やす, 最小サンプルサイズを減らす) と巨大な (複雑な) 決定木が生成される
“停止条件をどのように決める?”
異なる条件のもとで、モデルの試作と中間評価を繰り返し、最善の条件を探す
独立して抽出されたデータへの当てはまり 😄
理論的評価指標 (AICなど) 🙄
データへの当てはまり 😨
検証する停止条件群を決める
データをモデル試作用データ (Trainingデータ) と中間評価用データ (Validationデータ) にランダム2分割 (8:2 など)
ある停止条件について、Trainingデータのみを用いて、 g(X) を構築
Validationデータに当てはめ、予測値を獲得し、二乗誤差を推定
2-3を繰り返し、最も二乗誤差が小さくなる停止条件を探索
# A tibble: 6 × 3
X Y Type
<int> <dbl> <chr>
1 9 35.3 Training
2 4 -18.8 Training
3 7 2.43 Training
4 1 -2.89 Training
5 2 5.88 Validation
6 7 69.1 Validation
# A tibble: 6 × 5
X Y Type Mean TreeDepth1
<int> <dbl> <chr> <dbl> <dbl>
1 9 35.3 Training 4.01 35.3
2 4 -18.8 Training 4.01 -10.8
3 7 2.43 Training 4.01 2.43
4 1 -2.89 Training 4.01 -10.8
5 2 5.88 Validation 4.01 -10.8
6 7 69.1 Validation 4.01 2.43
# A tibble: 6 × 7
X Y Type Mean TreeDepth1 MeanMSE TreeMSE
<int> <dbl> <chr> <dbl> <dbl> <dbl> <dbl>
1 9 35.3 Training 4.01 35.3 979 0
2 4 -18.8 Training 4.01 -10.8 520 63
3 7 2.43 Training 4.01 2.43 2 0
4 1 -2.89 Training 4.01 -10.8 48 63
5 2 5.88 Validation 4.01 -10.8 4 280
6 7 69.1 Validation 4.01 2.43 4236 4444
Validateデータ
Mean: 2120
Tree: 2362
Trainingデータ
Mean: 387
Tree: 32
モデルの複雑さを決めることは難しい
背景情報や理論、“現実をよく見て”決める?
データへの当てはまりで決める?
注意しないと、常により巨大な決定木を支持
データ外も記述できる理論的枠組みを用いて、問題構造を理解する必要がある
母集団 f_P(Y,X) よりランダムに抽出したデータ \{X_i,Y_i\}_{i=1,..,N} を用いて、同じ母集団から新たにランダム抽出する事例を予測するモデル g(X) を構築
Population risk を減らす
\min_{g(X)\in\mathbb{G}}E_P[L(Y,g(X))]
\mathbb{G} : 関数の集合
L(Y,g(X)) = Loss function (研究者が指定)
E_p[(Y - g(X))^2]=\underbrace{E_p[(Y - E_P[Y|X])^2]}_{Irreducible}
+ \underbrace{E_p[(E_P[Y|X] - g(X))^2]}_{Reducible}
Irreducible: X が決まった時点で、どうしようもない
Reducible: (古典的な)推定問題
E_P[Y|X]-g(X)
=\underbrace{E_P[Y|X] - g_{\infty}(X)}_{Approximation\ Error}
+\underbrace{g_{\infty}(X)-g(X)}_{Estimation\ Error}
Y_i=E_P[Y|X_i]+\underbrace{u_i}_{Y_i - E_P[Y|X_i]}
\{Y_i,X_i\} を観察したとしても、 u_i から E_P[Y|X_i] を区別できない
Estimation errorの源泉
評価にも悪影響
理想的な推定方法は、 Population Risk を直接最小化する
できないのでどうするか?
\min_{g(X)\in\mathbb{G}}E [(Y-f(X))^2]:=\sum_i (Y_i-f(X_i))^2/N
A_j を事前に設定し、サブサンプル平均としてモデルを推定
以下と同値
\min_{g(X)}E[(Y_i-g(X_i))^2]
g(X_i)=\beta_1 \times \underbrace{I(X_i\in A_1)}_{Indicator}+..+\beta_L \times I(X_i\in A_{L})
一般に Y_i=E_P[Y_i|X_i\in A_j]+\underbrace{u_i}_{Y_i-E_P[Y_i|X_i\in A_j]}
u_i の分布 = データによって異なる
誤差が存在しない/誤差とそれ以外を区別できるのであれば、 巨大な決定木が最善
経済学の応用では”常に”個人差が残る (X は不十分)
\lim_{n\rightarrow\infty}\sum_{i|X_i\in A_j}\frac{Y_i}{N_{A_j}} = E_P[Y_i|X_i\in A_j]+\underbrace{\sum_{i|X_i\in A_j}\frac{u_i}{N_{A_j}}}_{\rightarrow 0}
A_j 内のサブグループ平均として予測値を推定
上記を所与として、A_j もEmpiricalRiskを最小化するように決定
A_j を細かくすれば、
E_{\infty}[Y_i|X_i\in A_j]\rightarrow E_P[Y|X_i]
E_{\infty}[Y_i|X_i\in A_j] と g(X_i) のギャップ拡大
Estimation errorの拡大
データ依存
新しく独立した事例を大量にサンプルし、モデルを評価
予測問題: “新しい”事例について予測したいので、新しいデータで評価するのは自然
母平均関数へのFitting: 最善の予測モデル = 母平均との二乗誤差最小化なので、予測にうまくいくモデル = 母平均をよりよく捉えるモデル
E_P[(Y_i-g(X_i))^2]=E_P[(E_P[Y|X] + \underbrace{u_i - g(X_i)}_{Independent})^2]
=E_P[(E_P[Y|X] - g(X_i))^2]+E[u_i^2]
ランダムに分割すれば、母集団から”独立に抽出された”と見做せる二つのデータを作り出せる
理想的な評価法を近似: 無限大のデータで評価できているわけではないが、
E[(Y_i-g(X_i))^2]=E[(E_P[Y|X] + \underbrace{u_i - g(X_i)}_{Dependent})^2]
u_i の影響を強く受けた (Estimation errorが大きい) 予測モデル の方が高評価されてしまう!!!
Empirical Risk Minimization を突き進めると、 Estimation errorが爆発し、 E_P[Y|X] からかけ離れたモデルが生成されてしまう
Learning by memorization
「最も X の値が近い事例を予測値とする」
X の組み合わせが十分に多いと、1事例しかないサブグループを生成できる
g(X_i)=Y_i であり、データに完璧に適合する
一般に予測性能は極めて悪い
Y_i=E_P[Y|X_i] であれば問題ないが、
例: 一卵性の双子
丸暗記が有効なケース: 観察不可能な要因の影響を排除しているケース
nr task_id learner_id resampling_id iters regr.rsq
1: 1 Price DeepTree holdout 1 0.69722453
2: 2 Price ShallowTree holdout 1 0.56028579
3: 3 Price Optimized Tree holdout 1 0.78750222
4: 4 Period DeepTree holdout 1 -0.23105951
5: 5 Period ShallowTree holdout 1 0.01200626
6: 6 Period Optimized Tree holdout 1 0.07184169
Hidden columns: resample_result